﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using ModuleDALCore;
using System.Data;
namespace DAL
{
    public class CTPhieuDatVeDAO : DALBase
    {
        public CTPhieuDatVeDAO()
        {
            this.OpenConnect();
        }
        private String _spName;

        public String SpName
        {
            get { return "SpCTPhieuDatVe"; }
            set { _spName = value; }
        }
        /// <summary>
        /// Chú thích : Do cấu trúc viết store giống nhau theo quy định nên :
        /// 0: là flag của selectALL
        /// 1:INSERT 
        /// 2:UPDATE 
        /// 3:DELETE
        /// 4:SELECT ONE BY PK
        /// các câu truy vấn phức tạp khác thì dùng class riêng không thể dùng phương pháp trên hoặc dùng cách truyên nhiều biến
        /// </summary>
        /// <param name="dv"></param>
        /// <returns></returns>
        public bool INSERT(CTPhieuDatVeDTO dv)
        {
            try
            {
                return (DBManager.Intance.ExecuteNonQuery(SpName, ConvertClassToArray.GetParamName(dv, null), ConvertClassToArray.GetValues(dv, 1)) == 1);
            }
            catch (Exception ex)
            {
                throw new InvalidProgramException(ex.Message);
            }
        }
        public bool UPDATE(CTPhieuDatVeDTO dv)
        {
            try
            {
                return (DBManager.Intance.ExecuteNonQuery(SpName, ConvertClassToArray.GetParamName(dv, null), ConvertClassToArray.GetValues(dv, 2)) == 1);
            }
            catch (Exception ex)
            {
                throw new InvalidProgramException(ex.Message);
            }
        }
        public bool DELETE(CTPhieuDatVeDTO dv)
        {

            try
            {
                return (DBManager.Intance.ExecuteNonQuery(SpName, ConvertClassToArray.GetParamName(dv, null), ConvertClassToArray.GetValues(dv, 3)) == 1);
            }
            catch (Exception ex)
            {
                throw new InvalidProgramException(ex.Message);
            }
        }
        public DataTable SELECTALL()
        {
            try
            {
                CTPhieuDatVeDTO dv = new CTPhieuDatVeDTO();
                return DBManager.Intance.ExecuteDataTable(SpName, ConvertClassToArray.GetParamName(dv, null), ConvertClassToArray.GetValues(dv, 0));
            }
            catch (Exception ex)
            {
                throw new InvalidProgramException(ex.Message);
            }
        }
    }
}
